import App from './App'
import {
	$http
} from '@escook/request-miniprogram' //发送请求
import uView from "uview-ui"; //使用uView
import store from "./store/store.js" //使用vuex

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'
Vue.use(uView)


uni.$http = $http
// 配置请求根路径
// $http.baseUrl = 'https://www.uinav.com'//旧接口
// $http.baseUrl = 'https://api-ugo-web.itheima.net'//可以
$http.baseUrl = 'https://api-hmugo-web.itheima.net'


// showLoading请求开始之前做一些事情
$http.beforeRequest = function(options) {
	uni.showLoading({ //显示消息提示框
		title: '数据加载中...',
		mask: true
	})
	// 判断请求的是否为有权限的 API 接口
	// 为请求头添加身份认证字段
	options.header = {
		// 字段的值可以直接从 vuex 中进行获取
		Authorization: store.state.login.token,
	}
}
// // 请求完成之后做一些事情
$http.afterRequest = function() {
	uni.hideLoading() //隐藏消息提示框
}
// 全局showToast提示
uni.$showToast = function(title = "数据加载成功", icon = "success", duration = 1500, mask = true) {
	uni.showToast({
		title,
		icon,
		duration,
		mask,
	})
}
uni.$setNavigationBarColor = function(tabBar) {

	if (store.state.setting.themeSkincare) {
		uni.setNavigationBarColor({
			frontColor: '#ffffff',
			backgroundColor: '#2e3136',
		})
		if (tabBar == 'tabBar') {
			uni.setTabBarStyle({
				backgroundColor: '#2e3136',
			})
		}
	} else {
		uni.setNavigationBarColor({
			frontColor: '#ffffff',
			backgroundColor: '#C00000',
		})
		if (tabBar == 'tabBar') {
			uni.setTabBarStyle({
				backgroundColor: '#ffffff',
			})
		}

	}

}

uni.$logon = function() {
	if (store.state.login.token == '') {
		uni.switchTab({
			url: "/pages/my/my",
			complete() {
				uni.$showToast("请登入", "error")
			}
		})

	}
}
//全局购物车数字徽标
uni.$setTabBarBadge = function() {
	uni.setTabBarBadge({
		index: 2,
		text: store.getters["cart/getCartLength"] + ''
	})
}
try {
	function isPromise(obj) {
		return (
			!!obj &&
			(typeof obj === "object" || typeof obj === "function") &&
			typeof obj.then === "function"
		);
	}

	// 统一 vue2 API Promise 化返回格式与 vue3 保持一致
	uni.addInterceptor({
		returnValue(res) {
			if (!isPromise(res)) {
				return res;
			}
			return new Promise((resolve, reject) => {
				res.then((res) => {
					if (res[0]) {
						reject(res[0]);
					} else {
						resolve(res[1]);
					}
				});
			});
		},
	});
} catch (error) {}

const app = new Vue({
	...App,
	store
})
app.$mount()
// #endif

// #ifdef VUE3
import {
	createSSRApp
} from 'vue'
export function createApp() {
	const app = createSSRApp(App)
	return {
		app
	}
}
// #endif